← Propuesta · Apéndice B · ADR · DashOne.ai · v1.0 · Agosto 2026
NetPay

Apéndice B · ADR
Registro de decisiones de arquitectura

Registra las decisiones de arquitectura del programa, su contexto, alternativas y consecuencias, con estatus explícito. Las marcadas Aceptada fueron confirmadas en la sesión conjunta del 6 de agosto de 2026 o se derivan directamente del requerimiento; las Propuesta requieren validación del responsable técnico de NetPay; las Pendiente requieren una decisión del cliente con fecha límite ligada al calendario de colaboración.
Valida
Responsable técnico/seguridad (NetPay) · Arquitectura (DashOne)
Estado del documento
Borrador — se cierra al término del Feature 0
Este documento no está cerrado

Este ADR es un borrador de trabajo, no una arquitectura aprobada. Las decisiones marcadas Propuesta y Pendiente deben validarse y resolverse como parte de las primeras tareas del kickoff del proyecto (Feature 0), conforme al calendario de colaboración de la propuesta (sección 06). Nada aquí se implementa como definitivo antes de esa validación.

ADR-001 · Plataforma base: AWS con BedrockAceptada · confirmada 2026-08-06
Contexto

NetPay ya opera infraestructura en AWS (S3, conexiones a Salesforce, componentes en construcción del bot de merchants) y su área de seguridad/arquitectura tiene a AWS pre-aprobado ("safe check"). El requerimiento pedía compatibilidad con Bedrock.

Decisión

Todo el programa se construye sobre la cuenta AWS de NetPay: Bedrock (LLM: Claude; Knowledge Base para RAG), Lambda, DynamoDB, S3, S3 Vectors, Secrets Manager, CloudWatch, End User Messaging Social para WhatsApp, y Amazon Connect en Fase 2.

Alternativas consideradas

Plataformas de agentes de terceros con deployment acelerado: descartadas como base del entregable final para evitar fricción de seguridad y compatibilidad; pueden usarse como herramienta de prototipado (ver ADR-008).

Consecuencias — Sin vendor lock-in de DashOne: el sistema queda en infraestructura del cliente. Los costos de consumo corren en la cuenta AWS de NetPay (posiblemente cubiertos por su paquete vigente — por confirmar, insumo #10). La portabilidad futura a otra nube es decisión del cliente y se facilita por la capa de abstracción (ADR-005).
ADR-002 · Dimensionamiento para la red actual, no para mercado abiertoAceptada · confirmada 2026-08-06
Contexto

Volumen actual: ~445 socios, ~411 prospectos/mes, ~400 consultas/mes. NetPay contempla a futuro un auto-onboarding a mercado abierto que "cambiaría los números drásticamente", pero declaró explícitamente que no es la intención en esta etapa.

Decisión

Arquitectura serverless dimensionada para la escala actual con margen razonable (Lambda + DynamoDB on-demand escalan solos ante picos moderados), sin sobre-ingeniería de alta concurrencia.

Consecuencias — Costos de operación bajos y proporcionales al uso. Si NetPay decide abrir a mercado masivo, se requiere una reevaluación de arquitectura (rate limits de WABA, throughput, particionamiento) que constituye un programa nuevo — registrado en el backlog de evolución del PRD.
ADR-003 · S3 no es fuente autoritativa; lecturas transaccionales contra el sistema dueño del datoPropuesta · valida NetPay · dependencia D12, sem 2
Contexto

El requerimiento original ubicaba en S3 el estatus en tiempo real y la lógica de permisos. S3 es almacenamiento de objetos: sirve como destino de consolidación, pero no es autoritativo sobre datos que mutan en Salesforce o en el Core. Un estatus con rezago batch degrada la confianza en el canal; permisos evaluados sobre copias planas desincronizadas implican riesgo de exposición cruzada entre socios.

Decisión

Las consultas transaccionales (prospectos, contratos, expedientes, SLA, tickets) se leen del sistema que administra el dato — Salesforce durante este programa — a través de la capa de abstracción (ADR-005). S3 se usa para: (a) el contenido de la base de conocimiento del RAG, (b) documentos y bitácoras. La autorización nunca se evalúa sobre copias planas (ADR-004).

Consecuencias — Estatus siempre fresco; sin ventana de exposición por desincronización. Se requiere confirmar si el S3 consolidado del requerimiento existe hoy o es aspiracional, y su frecuencia real de actualización, para decidir si algún dominio de consulta puede servirse desde ahí.
ADR-004 · Identificación por celular + segundo factor; autorización server-sidePropuesta · diseño detallado en F0
Contexto

Hoy no existe mecanismo de autenticación. El número de celular es de baja fricción pero portable y suplantable: no puede ser factor único para exponer expedientes y contratos. NetPay valoró explícitamente que la propuesta incluyera autenticación (único proveedor que lo contempló).

Decisión

Clasificación de datos por sensibilidad: información de bajo riesgo con identificación por celular registrado; datos de cuenta/expediente/contrato exigen ID de Socio Comercial como segundo factor. La autorización Socio/Master ↔ cuenta/company/branch se evalúa del lado servidor en cada consulta, contra la fuente autoritativa de la relación. Toda consulta queda en bitácora de acceso auditable. Revocación de permisos surte efecto en la siguiente consulta (sin sesiones privilegiadas persistentes).

Consecuencias — Fricción adicional aceptada para datos sensibles (a ratificar por NetPay). El KPI de seguridad del programa es 0 incidentes de fuga entre cuentas, auditable por bitácora. Prerrequisito de datos: celular registrado poblado y relación Socio/Master confiable (checklist de data readiness del PRD).
ADR-005 · Capa de abstracción de datos con adaptadores intercambiablesPropuesta
Contexto

Salesforce es la fuente de verdad hoy, pero NetPay contempla cuestionar/evolucionar sus plataformas a futuro, y el rediseño del bot de merchants interviene workflows de Salesforce compartidos durante la ejecución de este programa.

Decisión

El orquestador del agente nunca consulta Salesforce (ni otras fuentes) directamente: lo hace a través de una capa de abstracción con interfaz por dominio (prospectos, contratos, tickets, SLA, cotizaciones) y adaptadores intercambiables por sistema de origen.

Consecuencias — Un cambio de CRM o de fuente de datos se absorbe reescribiendo el adaptador, no el agente. Los cambios del bot de merchants sobre workflows compartidos impactan un punto único y detectable. Costo: una pieza más de ingeniería en Fase 1 (ya cotizada en Feature 2); beneficio directo: tolerancia a los tres proyectos paralelos del cliente (merchants, S3, evolución CRM).
ADR-006 · Escrituras con confirmación explícita, idempotencia y reversión (Fase 2)Propuesta
Contexto

En Fase 2 el agente pasa de leer a escribir en sistemas de registro (prospectos, tickets, cambios de datos, pedidos). Los reintentos de red en WhatsApp y la naturaleza conversacional generan riesgo de operaciones duplicadas o no intencionadas.

Decisión

Patrón obligatorio para toda escritura: (1) confirmación explícita del usuario con resumen de la operación; (2) claves de idempotencia — un reintento no duplica; (3) bitácora de toda operación con datos previos/posteriores; (4) procedimiento de reversión documentado por tipo de operación.

Consecuencias — Levemente más fricción conversacional en operaciones de escritura, a cambio de integridad de datos y auditabilidad. Los umbrales de autorización por monto/tipo (cotizaciones, bajas de equipo) se configuran como reglas de negocio, no código.
ADR-007 · Cotizador: recomendación acotada por reglas, con escalamiento a pricingLógica aceptadaD8 abierta
Contexto

El cotizador es la capacidad angular del programa. NetPay definió el comportamiento esperado: recomendación inteligente basada en el histórico de cotizaciones aprobadas por pricing (giro, volumen, ticket promedio → condiciones típicas de cierre), no un formulario de preguntas básicas.

Decisión
  • Ground truth: el histórico de cotizaciones aprobadas por pricing (18–24 meses) se asume correcto y es la base de entrenamiento/inferencia.
  • Preprocesamiento: la data se ingesta, homologa y digiere previamente (no se calcula "al vuelo" en cada consulta — costo por token y latencia); el agente consume el resultado estructurado.
  • Límites duros: la recomendación opera dentro de piso/techo por reglas de negocio. Dentro de límites → el agente entrega. Fuera de límites → lo declara, genera ticket y escala a pricing. El agente nunca aprueba condiciones fuera de política.
  • Cotización sin registro: se puede cotizar de manera exploratoria sin crear formalmente un prospecto; el alta formal es un paso posterior y separado.
  • POC en Feature 0 valida el diseño con data real antes del desarrollo del Feature 6.
Consecuencias — La calidad de la recomendación depende directamente de la calidad y completitud de la data histórica (checklist de data readiness). La decisión D8 (PDF vs. experiencia web dinámica) queda gobernada por evidencia de la POC, no por preferencia a priori.
ADR-008 · Prototipado acelerado permitido; entregable final siempre en infraestructura NetPayPropuesta
Contexto

DashOne dispone de agentes de WhatsApp pre-construidos (knowledge base, skills) desplegables en minutos, útiles para validar experiencia y contenido tempranamente. NetPay quiere velocidad de validación sin comprometer el destino final del sistema.

Decisión

Los mockups, POCs y validaciones tempranas pueden ejecutarse sobre herramientas de prototipado de DashOne. Todo componente productivo se entrega desplegado en la cuenta AWS de NetPay, bajo sus controles. La migración prototipo → producción es responsabilidad de DashOne dentro del alcance cotizado.

Consecuencias — Ciclos de feedback de días en lugar de semanas (mock → wireframe → producto se colapsa en demos funcionales tempranas), sin residuos de dependencia sobre infraestructura de terceros al cierre.
ADR-009 · Piloto desconectado de la plataforma global de agentesAceptada · decisión NetPay 2026-08-06
Contexto

NetPay decidió sacar el piloto rápido por un camino alternativo, sin integrarlo a su plataforma global de agentes, cuyo diseño/roadmap está fuera del control de este programa.

Decisión

El agente opera de forma autónoma respecto a la plataforma global. No se construyen integraciones hacia ella en ninguna de las dos fases.

Consecuencias — Time-to-market del piloto sin dependencia externa. Si a futuro se requiere sincronización (export de bases, actualización manual o integración), se dimensiona como alcance nuevo cuando el diseño de esa plataforma esté definido — registrado en el backlog de evolución del PRD.
ADR-010 · Entrega de credenciales por WhatsAppPendiente · bloquea Feature 8 · fecha límite sem 2
Contexto

El requerimiento pide entregar accesos, contraseñas y API keys por el canal, descartando un portal. WhatsApp cifra en tránsito, pero el lado business y sus bitácoras ven el contenido, y una cuenta secuestrada expone todo lo entregado. Con la restricción de "100% WhatsApp", la salida estándar (enlace a portal autenticado) no está disponible.

Opciones sobre la mesa — a resolver con seguridad NetPay
  • (a) Enlace efímero de un solo uso con verificación adicional (segundo factor) — portal mínimo, técnicamente fuera de la restricción estricta.
  • (b) Entrega en canal con secreto parcial + activación por vía separada.
  • (c) Entrega en canal con expiración/rotación forzada inmediata post-primer-uso.
Decisión

Diferida al área de seguridad de NetPay, con acompañamiento de diseño de DashOne. El Feature 8 se construye alrededor del mecanismo autorizado.

Consecuencias — Sin decisión en semana 2, el Feature 8 se re-secuencia dentro de la Fase 1 y, si excede la ventana, pasa a control de cambios. La rotación y revocación automatizadas se implementan en cualquier escenario.
ADR-011 · Interfaz con el proyecto de bot de merchantsPropuesta · dependencia insumo #9
Contexto

Ambos proyectos comparten cuenta AWS, equipo del cliente, ventana de tiempo y — crítico — workflows de Salesforce que este programa lee y el otro modifica.

Decisión

Se establece: (1) interlocutor único del lado merchants con obligación de aviso previo de cambios a objetos/workflows compartidos; (2) registro de dependencias externas revisado al cierre de cada feature; (3) guidelines de desarrollo alineados y componentes comunes reutilizables donde el diseño lo permita (disposición ya manifestada por DashOne).

Consecuencias — Los cambios del proyecto paralelo se detectan en la capa de adaptadores (ADR-005) y se gestionan por control de cambios, no como sorpresas en producción.

Resumen de estatus

ADRTítuloEstatusAcción requerida de NetPay
001AWS + Bedrock como baseAceptada—
002Dimensionamiento a red actualAceptada—
003S3 no autoritativo; lecturas transaccionalesPropuestaConfirmar existencia/frecuencia del S3 consolidado (sem 2)
004Identificación + 2º factor; auth server-sidePropuestaRatificar ID de Socio como 2º factor (F0)
005Capa de abstracción con adaptadoresPropuestaValidación técnica (F0)
006Escrituras: confirmación + idempotencia + reversiónPropuestaValidación técnica (F0)
007Cotizador acotado por reglas + escalamiento a pricingLógica ✓ D8 abiertaEntregar data histórica (sem 1–2); decidir D8 con la POC
008Prototipado acelerado, entrega en infra NetPayPropuestaValidación técnica (F0)
009Piloto desconectado de plataforma globalAceptada—
010Mecanismo de credencialesPendienteDecisión de seguridad, semana 2 — bloquea F8
011Interfaz con bot de merchantsPropuestaDesignar interlocutor (sem 1)

Validación de cierre — al término del Feature 0

RolNombreFirmaFecha
Responsable técnico / seguridad · NetPay
Arquitectura · DashOne

Las decisiones aquí registradas gobiernan la implementación. Cambios posteriores a la validación se registran como nuevos ADRs y, si alteran alcance o esfuerzo, pasan por control de cambios.